﻿#pragma once

//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
#include <atltime.h>	// 包含atltime类，用于处理日期和时间
#include <windows.h>	// 包含windows.h头文件
#include <direct.h> 	// 用于切换当前目录

#include <iostream>
#include <string>
#include <vector>
#include <fstream>		// 包含文件流类
#include <istream>		// 包含输入流类
#include <stdexcept>	// 包含异常基类
#include <ctime>		// 包含时间函数
#include <regex>		// 包含正则表达式库
//#include <algorithm>	// 包含算法


#if defined(_MSVC_LANG) && _MSVC_LANG >= 201703L  // 使用 MSVC 的宏
    #define USE_CPP17
#elif __cplusplus >= 201703L
    // 使用 GCC, Clang, ICC 等的宏
    #define USE_CPP17
//#else
    // 如果编译器不支持 C++17，提示或使用旧的文件系统 API
    //#error "需要 C++17 或更高版本"
#endif

#if defined(USE_CPP17)
    #include <filesystem> // C++17 用于操作文件系统
#endif


// 文件数据结构
struct FileData {
    std::string filename;
    std::string file_content;
};



using std::cout;
using std::endl;

extern void test_file1();
extern void test_file2();
extern void test_path();
void test_binary_file();

extern void test_exception();

extern void test_regex();


// 宏定义
#define print_start(str) std::cout << " ----------------- " << str << " Start ------------------------\n";
#define print_end(str) std::cout << " ----------------- " << str << " End ------------------------\n\n\n";